docker compose build --no-cache docker compose up -d docker restart kapoeira
Fast and efficient…
it did not test the integration with the Kafka cluster
not a tool for QA, only for dev
how to test several streams ?
how to communicate with DEV/PO/QA ?
HTTP-based APIs
simple syntax (Gherkin)
Inner tool
console-script confluent
Cucumber Scala, using specific Gherkin DSL.
TODO
docker compose build --no-cache docker compose up -d docker restart kapoeira
Feature: Burger π feature
Background:
Given input topic
| topic | alias | key_type | value_type |
| bread | bread-in | string | string |
| vegetable | vegetable-in | string | string |
| meat | meat-in | string | string |
And output topic
| topic | alias | key_type | value_type | readTimeoutInSecond |
| burger | burger-out | string | string | 5 |
And var uuid = call function: uuid
Scenario: Nominal
When records with key and value are sent
| topic_alias | key | value |
| bread-in | π€€_${uuid} | π |
| vegetable-in | π€€_${uuid} | π
|
| meat-in | π€€_${uuid} | π₯© |
Then expected records
| topic_alias | key | value |
| burger-out | π€€_${uuid} | order |
And assert order $ == "π"
Scenario: Not a burger
When records with key and value are sent
| topic_alias | key | value |
| bread-in | π€€_${uuid} | π |
| vegetable-in | π€€_${uuid} | π₯ |
| meat-in | π€€_${uuid} | π₯© |
Then expected records
| topic_alias | key | value |
| burger-out | π€€_${uuid} | order |
And assert order $ == "π + π₯ + π₯©"
Scenario Outline: Many customers
When records with key and value are sent
| topic_alias | key | value |
| bread-in | <user>_${uuid} | <bread> |
| vegetable-in | <user>_${uuid} | <vegetable> |
| meat-in | <user>_${uuid} | <meat> |
Then expected records
| topic_alias | key | value |
| burger-out | <user>_${uuid} | order |
And assert order $ == "<result>"
Examples:
| user | bread | vegetable | meat | result |
| π€€ | π | π
| π₯© | π |
| π | π | π
| π | π |
| π‘ | π | π
| π | π |Feature: Meal π feature
Background:
Given input topic
| topic | alias | key_type | value_type |
| bread | bread-in | string | string |
| vegetable | vegetable-in | string | string |
| meat | meat-in | string | string |
| side-dishes | side-dishes-in | string | string |
And output topic
| topic | alias | key_type | value_type | readTimeoutInSecond |
| meal | meal-out | string | string | 20 |
And var uuid = call function: uuid
Scenario: Left Join with Left first
When records with key and value are sent
| topic_alias | key | value |
| bread-in | π€€_${uuid} | π |
| vegetable-in | π€€_${uuid} | π
|
| meat-in | π€€_${uuid} | π₯© |
| side-dishes-in | π€€_${uuid} | π₯πΊ |
Then expected records
| topic_alias | key | value |
| meal-out | π€€_${uuid} | notif |
| meal-out | π€€_${uuid} | order |
And assert notif $ == "π"
And assert order $ == "π(π + ππΊ)"
Scenario: Left Join with Right first
When records with key and value are sent
| topic_alias | key | value |
| side-dishes-in | π€€_${uuid} | π₯π· |
| bread-in | π€€_${uuid} | π |
| vegetable-in | π€€_${uuid} | π
|
| meat-in | π€€_${uuid} | π₯© |
Then expected records
| topic_alias | key | value |
| meal-out | π€€_${uuid} | order |
And assert order $ == "π(π + ππ·)"